// 键=值&...&键=值  =>  {键:数据,...,键:数据}
const parse = (params) => {
    const obj = {}
    // 1 & 变数组  ['键=值', ....]
    const arr = params.split('&')
    // 2 遍历
    arr.forEach(item => {
        // item  键=值
        // 3 = 变数组
        const temp = item.split('=')  // temp[0] 键 temp[1] 值
        const key = temp[0]
        let value = temp[1]
        // 对值进行类型判断和转换
        if (value === 'true' || value === 'false') {
            value = value === 'true'
        } else if (!isNaN(Number(value))) {
            value = Number(value)
        } else if (value === 'null') {
            value = null
        } else if (value === 'undefined') {
            value = undefined
        }

        obj[key] = value
    })

    return obj
}

// {键:数据,...,键:数据} =>  键=值&...&键=值
const stringify = (obj) => {
    const arr = []
    for (let key in obj) {
        arr.push(`${key}=${obj[key]}`)
    }
    return arr.join('&')
}

export  default  {
    parse,
    stringify
}